home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_13_12 / taylor / gpibio.h < prev    next >
C/C++ Source or Header  |  1995-08-17  |  3KB  |  105 lines

  1. // gpibio.h
  2. #ifndef  GPIBIO
  3. #define  GPIBIO
  4. #include "decl.h"  // NI-488.2(TM) prototypes
  5.  
  6. // GENERIC Stream Class
  7. class gstream
  8. {
  9. protected:
  10.         char * base_;   // start of get buffer area
  11.         char * ebuf_;   // end+1 of get buffer area
  12.         char * pbase_;  // start of put area
  13.         char * pptr_;   // next put location
  14.         char * epptr_;  // end+1 of put area
  15.         char * gptr_;   // next get location
  16.         char * egptr_;  // end+1 of filled part of get buffer
  17.         int  gleng_;    // Current length of get area
  18. public:
  19.              gstream(); // constructor
  20.              ~gstream(); // destructor
  21.         void sputc(char c);
  22.         void sput(char *);
  23.         char sgetc();
  24.         char sbumpc();
  25.         virtual int underflow()=0;  // fill empty buffer
  26.         virtual void overflow()=0;  // flush buffer and make more room
  27.         void gets(char *s);
  28.         void flush_input() {gptr_ = egptr_;}
  29. };
  30.  
  31. // GPIB BOARD CLASS
  32. class gpibdvr
  33. {
  34.    int bhandle;
  35. public:
  36.    gpibdvr(int b=0);
  37.    int open_device(int d);
  38. };
  39.  
  40. // GPIB Interface Class
  41. class gpibio
  42. {
  43.    static int     rep_cnt[2];
  44. protected:
  45.    static gpibdvr *dvr[2];
  46. public:
  47.    int board;
  48.    int device;
  49.    int radix;
  50.    int status;
  51.    gpibio(int b=0);  // Constructor
  52.    ~gpibio(); // Destructor
  53.    int operator !(){return (status&(ERR|TIMO))!=0;}
  54. };
  55.  
  56. // OUTPUT CLASS
  57. class gpibout: public gpibio , public gstream
  58. {
  59. public:
  60.         gpibout(int d=5,int b=0);
  61.         gpibout & operator <<(char *s);
  62.         gpibout & operator <<(char);
  63.         gpibout & operator <<(short);
  64.         gpibout & operator <<(int);
  65.         gpibout & operator <<(long);
  66.         gpibout & operator <<(float);
  67.         gpibout & operator <<(double);
  68.         gpibout & operator<< (gpibout & (*_f)(gpibout &));
  69.         virtual void overflow();  // flush buffer and make more room
  70.         virtual int underflow();  // dummy
  71. };
  72.  
  73. // INPUT CLASS
  74. class gpibin: public gpibio , public gstream
  75. {
  76. public:
  77.         gpibin(int d=5,int b=0);
  78.         int srqwait();
  79.         gpibin& operator >>(char *s);
  80.         gpibin& operator >>(float &);
  81.         gpibin& operator >>(double &);
  82.         gpibin& operator >>(char &);
  83.         gpibin& operator >>(short &);
  84.         gpibin& operator >>(int &);
  85.         gpibin& operator >>(long &);
  86.         gpibin & operator>> (gpibin & (*_f)(gpibin &));
  87.         virtual int underflow();  // fill empty buffer
  88.         virtual void overflow();  // dummy
  89. };
  90.  
  91. // Manipulators
  92. gpibout & flush(gpibout &x);
  93. gpibout & endl(gpibout &x);
  94. gpibout & dec(gpibout &x);
  95. gpibout & hex(gpibout &x);
  96. gpibout & oct(gpibout &x);
  97. gpibout & bin(gpibout &x);
  98. gpibin & dec(gpibin &x);
  99. gpibin & hex(gpibin &x);
  100. gpibin & oct(gpibin &x);
  101. gpibin & bin(gpibin &x);
  102. gpibin & flush(gpibin &x);
  103.  
  104. #endif
  105.